package com.tao.service;

import com.tao.pojo.Coding;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.UUID;

@Service
public class topicProductService {
    @Autowired
    private RabbitTemplate rabbitTemplate;
    // 1: 定义交换机
    private String exchangeName = "topic-exchange-boot";
    // 2: 路由key
    private String routeKey = "topic.duanxin.coding.msg";
    public void makeOrder(Long userId, Long productId, int num) {
        // 1： 模拟用户下单
        String orderNumer = UUID.randomUUID().toString();
        // 2: 根据商品id productId 去查询商品的库存
        // int numstore = productSerivce.getProductNum(productId);
        // 3:判断库存是否充足
        // if(num >  numstore ){ return  "商品库存不足..."; }
        // 4: 下单逻辑
        // orderService.saveOrder(order);
        // 5: 下单成功要扣减库存
        // 6: 下单完成以后
        System.out.println("用户 " + userId + ",订单编号是：" + orderNumer+";key："+routeKey);
        // 发送订单信息给RabbitMQ Deract
        rabbitTemplate.convertAndSend(exchangeName, routeKey, orderNumer);
    }

    public void makeCoding(Coding coding){
        String orderNumer = UUID.randomUUID().toString();
        routeKey="topic.coding.msg";
        System.out.println("rabbitmq:coding:"+coding.toString());
        rabbitTemplate.convertAndSend(exchangeName, routeKey, coding);
    }

//    public void makeTTL(Long userId, Long productId, int num) {
//        // 1： 模拟用户下单
//        String orderNumer = UUID.randomUUID().toString();
//        // 2: 根据商品id productId 去查询商品的库存
//        // int numstore = productSerivce.getProductNum(productId);
//
//        String exchangename="ttl-direct-exchange-boot";
//        String routingkey="";
//// 发送时设置 过滤信息  key
//        System.out.println("TTL --" + userId + "--测试：" + orderNumer);
//        // 发送订单信息给RabbitMQ Deract
//        rabbitTemplate.convertAndSend(exchangename, routingkey, orderNumer);
//    }

//    public void makeTTLMsg(int userId, int productId, int num) {
//        // 1： 模拟用户下单
//        String orderNumer = UUID.randomUUID().toString();
//        // 2: 根据商品id productId 去查询商品的库存
//        // int numstore = productSerivce.getProductNum(productId);
//
//        String exchangename="ttl-direct-exchange-msg";
//        String routingkey="ttlmsg";
//
//        //设置过期时间
//        MessagePostProcessor msgpp=new MessagePostProcessor(){
//            @Override
//            public Message postProcessMessage(Message message) throws AmqpException {
//                message.getMessageProperties().setExpiration("10000"); //过期时间
//                message.getMessageProperties().setContentEncoding("utf-8"); //编码
//                return message;
//            }
//        };
//
//// 发送时设置 过滤信息  key
//        System.out.println("TTL --" + userId + "--测试：" + orderNumer);
//        // 发送订单信息给RabbitMQ Deract
//        rabbitTemplate.convertAndSend(exchangename, routingkey, orderNumer,msgpp);
//    }
}